package com.cloudkinto.service.platform;

import com.cloudkinto.dto.platform.order.PlatformOrderDto;
import com.cloudkinto.entity.MailAccountDo;
import com.cloudkinto.entity.PlatformOrderDo;
import com.cloudkinto.entity.PlatformOrderProductDo;
import com.cloudkinto.entity.PlatformStoreDo;
import com.cloudkinto.service.consumer.vo.StockToPlatformConsumerReq;
import com.cloudkinto.service.consumer.vo.rakuten.RakutenMarkShipConsumerReq;
import com.cloudkinto.service.consumer.vo.rakuten.RakutenOrderUpdateConReq;
import com.cloudkinto.service.platform.vo.rakuten.RakutenApiRes;
import com.cloudkinto.service.platform.vo.rakuten.RakutenSyncReq;
import com.cloudkinto.service.platform.vo.rakuten.stock.InventoryRakutenEntity;
import com.cloudkinto.service.platform.vo.rakuten.stock.InventoryRakutenReq;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  service接口
 * </p>
 * @author hua
 * @since 2024-12-25
 */
public interface PlatformOrderRakutenSyncService {

    void platOrderAutoConfirm();
    void hanldeAutoSendMail(List<MailAccountDo> mailAccountDos, List<PlatformOrderDo> platInertList, List<PlatformOrderProductDo> platInsetItems) ;

    String autoConfirmOrder(Long storeId);

    RakutenApiRes testGetOrderByNumber(String orderNumber, Long storeId);

    void testGetOrderByTime(String startDate, String  endDate, List<String> orderNumbers, Integer dateType, Long storeId, Long userId);

    void platOrderRakutenSync();
    String updateRakutenOrders(RakutenSyncReq req);


    void consumerUpdate(RakutenOrderUpdateConReq req);

    String manualUpdateRakutenOrders(List<Long> storeIds, Date beginTime, Date endTime, Long companyId);

    void markShip(RakutenMarkShipConsumerReq req);

    /**
     * 定时同步乐天标发状态
     */
    void syncMarkRecord();

    void getMarkStatus(Long id);

    String setStock(List<InventoryRakutenReq> stockList, PlatformStoreDo storeDo, Long userId);

    void setStockByStoreId(StockToPlatformConsumerReq req);

    String testSetStock();

    void itemSearch();

    String itemSearch(PlatformStoreDo storeDo, String parentSku, String platformSku);

    void inventoryGet();
    String inventoryBulkGetRange(PlatformStoreDo storeDo);

    void  inventoryBulkGetRangeApi(Map<String, Integer> moveMap, PlatformStoreDo storeDo, int minQuantity, int maxQuantity);

    String updateRakutenOrdersHistory(RakutenSyncReq req);



}
